home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 May: Tool Chest / Developer CD Series May 1996 (Tool Chest) (Apple Computer) (1996).iso / Tool Chest / Development Tools & Languages / • Other Platforms / PCCTS 1.31 / antlr / proto.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-10  |  16.0 KB  |  532 lines  |  [TEXT/MPS ]

  1. /*
  2.  * proto.h -- function prototypes
  3.  *
  4.  * $Id: proto.h,v 1.13 1994/12/31 21:02:55 parrt Exp parrt $
  5.  * $Revision: 1.13 $
  6.  *
  7.  * SOFTWARE RIGHTS
  8.  *
  9.  * We reserve no LEGAL rights to the Purdue Compiler Construction Tool
  10.  * Set (PCCTS) -- PCCTS is in the public domain.  An individual or
  11.  * company may do whatever they wish with source code distributed with
  12.  * PCCTS or the code generated by PCCTS, including the incorporation of
  13.  * PCCTS, or its output, into commerical software.
  14.  * 
  15.  * We encourage users to develop software with PCCTS.  However, we do ask
  16.  * that credit is given to us for developing PCCTS.  By "credit",
  17.  * we mean that if you incorporate our source code into one of your
  18.  * programs (commercial product, research project, or otherwise) that you
  19.  * acknowledge this fact somewhere in the documentation, research report,
  20.  * etc...  If you like PCCTS and have developed a nice tool with the
  21.  * output, please mention that you developed it using PCCTS.  In
  22.  * addition, we ask that this header remain intact in our source code.
  23.  * As long as these guidelines are kept, we expect to continue enhancing
  24.  * this system and expect to make other tools available as they are
  25.  * completed.
  26.  *
  27.  * ANTLR 1.31
  28.  * Terence Parr
  29.  * Parr Research Corporation
  30.  * with Purdue University and AHPCRC, University of Minnesota
  31.  * 1989-1995
  32.  */
  33.  
  34.                            /* V a r i a b l e s */
  35.  
  36. extern int tp;
  37. extern Junction *SynDiag;
  38. extern char Version[];
  39. extern char VersionDef[];
  40. #ifdef __cplusplus
  41. extern void (*fpPrint[])(...);
  42. #else
  43. extern void (*fpPrint[])();
  44. #endif
  45. #ifdef __cplusplus
  46. extern struct _set (*fpReach[])(...);
  47. #else
  48. extern struct _set (*fpReach[])();
  49. #endif
  50. #ifdef __cplusplus
  51. extern struct _tree *(*fpTraverse[])(...);
  52. #else
  53. extern struct _tree *(*fpTraverse[])();
  54. #endif
  55. #ifdef __cplusplus
  56. extern void (**fpTrans)(...);
  57. #else
  58. extern void (**fpTrans)();
  59. #endif
  60. #ifdef __cplusplus
  61. extern void (**fpJTrans)(...);
  62. #else
  63. extern void (**fpJTrans)();
  64. #endif
  65. #ifdef __cplusplus
  66. extern void (*C_Trans[NumNodeTypes+1])(...);
  67. #else
  68. extern void (*C_Trans[])();
  69. #endif
  70. #ifdef __cplusplus
  71. extern void (*C_JTrans[NumJuncTypes+1])(...);
  72. #else
  73. extern void (*C_JTrans[])();
  74. #endif
  75. extern int BlkLevel;
  76. extern int CurFile;
  77. extern char *CurRule;
  78. extern Junction *CurRuleBlk;
  79. extern RuleEntry *CurRuleNode;
  80. extern ListNode *CurElementLabels;
  81. extern char *FileStr[];
  82. extern int NumFiles;
  83. extern int EpToken;
  84. extern int WildCardToken;
  85. extern Entry    **Tname,
  86.                 **Texpr,
  87.                 **Rname,
  88.                 **Fcache,
  89.                 **Tcache,
  90.                 **Elabel,
  91.                 **Sname;
  92. extern ListNode *ExprOrder;
  93. extern ListNode **Cycles;
  94. extern int TokenNum;
  95. extern int LastTokenCounted;
  96. extern ListNode *BeforeActions, *AfterActions, *LexActions;
  97. extern ListNode *eclasses, *tclasses;
  98. extern char    *HdrAction;
  99. extern FILE    *ErrFile;
  100. extern char *RemapFileName;
  101. extern char *ErrFileName;
  102. extern char *DlgFileName;
  103. extern char *DefFileName;
  104. extern char *ModeFileName;
  105. extern int NumRules;
  106. extern Junction **RulePtr;
  107. extern int LL_k;
  108. extern int CLL_k;
  109. extern char *decodeJType[];
  110. extern int PrintOut;
  111. extern int PrintAnnotate;
  112. extern int CodeGen;
  113. extern int LexGen;
  114. extern int esetnum;
  115. extern int setnum;
  116. extern int wordnum;
  117. extern int GenAST;
  118. extern int GenANSI;
  119. extern int **FoStack;
  120. extern int **FoTOS;
  121. extern int GenExprSets;
  122. extern FILE *DefFile;
  123. extern int CannotContinue;
  124. extern int GenCR;
  125. extern int GenLineInfo;
  126. extern int action_file, action_line;
  127. extern int TraceGen;
  128. extern int CurAmbigAlt1, CurAmbigAlt2, CurAmbigline, CurAmbigfile;
  129. extern char *CurAmbigbtype;
  130. extern int elevel;
  131. extern int GenEClasseForRules;
  132. extern FILE *input, *output;
  133. extern char **TokenStr, **ExprStr;
  134. extern int CurrentLexClass, NumLexClasses;
  135. extern LClass lclass[];
  136. extern char LexStartSymbol[];
  137. extern char    *CurRetDef;
  138. extern char    *CurParmDef;
  139. extern int OutputLL_k;
  140. extern int TreeResourceLimit;
  141. extern int DemandLookahead;
  142. extern char *RulePrefix;
  143. extern int GenStdPccts;
  144. extern char *stdpccts;
  145. extern int ParseWithPredicates;
  146. extern int ConstrainSearch;
  147. extern int FoundGuessBlk;
  148. extern int FoundException;
  149. extern int WarningLevel;
  150. extern int pLevel;
  151. extern int pAlt1;
  152. extern int pAlt2;
  153. extern int AImode;
  154. extern int HoistPredicateContext;
  155. extern int GenCC;
  156. extern char *ParserName;
  157. extern char *StandardSymbols[];
  158. extern char *ASTSymbols[];
  159. extern set reserved_positions;
  160. extern set all_tokens;
  161. extern set imag_tokens;
  162. extern set tokclasses;
  163. extern ListNode *ForcedTokens;
  164. extern int *TokenInd;
  165. extern FILE *Parser_h, *Parser_c;
  166. extern char CurrentClassName[];
  167. extern int no_classes_found;
  168. extern char Parser_h_Name[];
  169. extern char Parser_c_Name[];
  170. extern ListNode *class_actions;
  171. extern char *UserTokenDefsFile;
  172. extern int UserDefdTokens;
  173. extern ListNode *MetaTokenNodes;
  174. extern char *OutputDirectory;
  175. extern int DontCopyTokens;
  176. extern set AST_nodes_refd_in_actions;
  177. extern ListNode *CurExGroups;
  178. extern int CurBlockID;
  179. extern int CurAltNum;
  180. extern Junction *CurAltStart;
  181. extern ExceptionGroup *DefaultExGroup;
  182. extern int NumSignals;
  183.  
  184.  
  185. #ifdef __USE_PROTOS
  186. extern void istackreset(void);
  187. extern int istacksize(void);
  188. extern void pushint(int);
  189. extern int popint( void );
  190. extern int istackempty( void );
  191. extern int topint( void );
  192. extern void NewSetWd( void );
  193. extern void DumpSetWd( void );
  194. extern void DumpSetWdForC( void );
  195. extern void DumpSetWdForCC( void );
  196. extern void NewSet( void );
  197. extern void FillSet( set );
  198. extern void ComputeErrorSets( void );
  199. extern void ComputeTokSets( void );
  200. extern void SubstErrorClass( set * );
  201. extern int DefErrSet( set *, int, char * );
  202. extern int DefErrSetForC( set *, int, char * );
  203. extern int DefErrSetForCC( set *, int, char * );
  204. extern void GenErrHdr( void );
  205. extern void dumpExpr( FILE *, char * );
  206. extern void addParm( Node *, char * );
  207. extern Graph buildAction( char *, int, int, int );
  208. extern Graph buildToken( char * );
  209. extern Graph buildWildCard( char * );
  210. extern Graph buildRuleRef( char * );
  211. extern Graph Or( Graph, Graph );
  212. extern Graph Cat( Graph, Graph );
  213. extern Graph makeOpt( Graph, int );
  214. extern Graph makeBlk( Graph, int );
  215. extern Graph makeLoop( Graph, int );
  216. extern Graph makePlus( Graph, int );
  217. extern Graph emptyAlt( void );
  218. extern TokNode * newTokNode( void );
  219. extern RuleRefNode * newRNode( void );
  220. extern Junction * newJunction( void );
  221. extern ActionNode * newActionNode( void );
  222. extern char * makelocks( void );
  223. extern void preorder( Tree * );
  224. extern Tree * tnode( int );
  225. extern void _Tfree( Tree * );
  226. extern Tree * tdup( Tree * );
  227. extern Tree * tappend( Tree *, Tree * );
  228. extern void Tfree( Tree * );
  229. extern Tree * tlink( Tree *, Tree *, int );
  230. extern Tree * tshrink( Tree * );
  231. extern Tree * tflatten( Tree * );
  232. extern Tree * tJunc( Junction *, int, set * );
  233. extern Tree * tRuleRef( RuleRefNode *, int, set * );
  234. extern Tree * tToken( TokNode *, int, set * );
  235. extern Tree * tAction( ActionNode *, int, set * );
  236. extern int tmember( Tree *, Tree * );
  237. extern Tree * tleft_factor( Tree * );
  238. extern Tree * trm_perm( Tree *, Tree * );
  239. extern void tcvt( set *, Tree * );
  240. extern Tree * permute( int );
  241. extern Tree * VerifyAmbig( Junction *, Junction *, unsigned **, set *, Tree **, Tree **, int * );
  242. extern set rJunc( Junction *, int, set * );
  243. extern set rRuleRef( RuleRefNode *, int, set * );
  244. extern set rToken( TokNode *, int, set * );
  245. extern set rAction( ActionNode *, int, set * );
  246. extern void HandleAmbiguity( Junction *, Junction *, Junction *, int );
  247. extern set First( Junction *, int, int, int * );
  248. extern void freeBlkFsets( Junction * );
  249. extern void genAction( ActionNode * );
  250. extern void genRuleRef( RuleRefNode * );
  251. extern void genToken( TokNode * );
  252. extern void genOptBlk( Junction * );
  253. extern void genLoopBlk( Junction *, Junction *, Junction *, int );
  254. extern void genLoopBegin( Junction * );
  255. extern void genPlusBlk( Junction * );
  256. extern void genSubBlk( Junction * );
  257. extern void genRule( Junction * );
  258. extern void genJunction( Junction * );
  259. extern void genEndBlk( Junction * );
  260. extern void genEndRule( Junction * );
  261. extern void genHdr( int );
  262. extern void genHdr1( int );
  263. extern void dumpAction( char *, FILE *, int, int, int, int );
  264. extern Entry ** newHashTable( void );
  265. extern Entry * hash_add( Entry **, char *, Entry * );
  266. extern Entry * hash_get( Entry **, char * );
  267. extern void hashStat( Entry ** );
  268. extern char * mystrdup( char * );
  269. extern void genLexDescr( void );
  270. extern void dumpLexClasses( FILE * );
  271. extern void genDefFile( void );
  272. extern void DumpListOfParmNames( char *, FILE * );
  273. extern int DumpNextNameInDef( char **, FILE * );
  274. extern void DumpOldStyleParms( char *, FILE * );
  275. extern void DumpType( char *, FILE * );
  276. extern int strmember( char *, char * );
  277. extern int HasComma( char * );
  278. extern void DumpRetValStruct( FILE *, char *, int );
  279. extern char * StripQuotes( char * );
  280. extern int main( int, char *[] );
  281. extern void readDescr( void );
  282. extern FILE * NextFile( void );
  283. extern char * outname( char * );
  284. extern void fatalFL( char *, char *, int );
  285. extern void fatal_intern( char *, char *, int );
  286. extern void cleanUp( void );
  287. extern char * eMsg3( char *, char *, char *, char * );
  288. extern char * eMsgd( char *, int );
  289. extern void s_fprT( FILE *, set );
  290. extern char * TerminalString( int );
  291. extern void lexclass( char * );
  292. extern void lexmode( int );
  293. extern int LexClassIndex( char * );
  294. extern int hasAction( char * );
  295. extern void setHasAction( char *, char * );
  296. extern int addTname( char * );
  297. extern int addTexpr( char * );
  298. extern int Tnum( char * );
  299. extern void Tklink( char *, char * );
  300. extern Entry * newEntry( char *, int );
  301. extern void list_add( ListNode **, void * );
  302. extern void list_apply( ListNode *, void (*)(void *) );
  303. extern char * Fkey( char *, int, int );
  304. extern void FoPush( char *, int );
  305. extern void FoPop( int );
  306. extern void RegisterCycle( char *, int );
  307. extern void ResolveFoCycles( int );
  308. extern void pJunc( Junction * );
  309. extern void pRuleRef( RuleRefNode * );
  310. extern void pToken( TokNode * );
  311. extern void pAction( ActionNode * );
  312. extern void FoLink( Node * );
  313. extern void addFoLink( Node *, char *, Junction * );
  314. extern void GenCrossRef( Junction * );
  315. extern void defErr( char *, long, long, long, long, long, long );
  316. extern void genStdPCCTSIncludeFile(FILE *);
  317. extern Predicate *find_predicates(Node *);
  318. extern void GenRulePrototypes(FILE *, Junction *);
  319. extern Junction *first_item_is_guess_block(Junction *);
  320. extern Junction *analysis_point(Junction *);
  321. extern Tree *make_tree_from_sets(set *, set *);
  322. extern Tree *tdup_chain(Tree *);
  323. extern Tree *tdif(Tree *, Predicate *, set *, set *);
  324. extern set covered_set(Predicate *);
  325. extern void AmbiguityDialog(Junction *, int, Junction *, Junction *, int *, int *);
  326. extern void dumpAmbigMsg(set *, FILE *, int);
  327. extern void GenRuleFuncRedefs(FILE *, Junction *);
  328. extern void GenPredefinedSymbolRedefs(FILE *);
  329. extern void GenASTSymbolRedefs(FILE *);
  330. extern void GenRemapFile(void);
  331. extern void GenSetRedefs(FILE *);
  332. extern ForcedToken *newForcedToken(char *, int);
  333. extern void RemapForcedTokens(void);
  334. extern char *TokenOrExpr(int);
  335. extern void setUpperRange(TokNode *, char *);
  336. extern void GenParser_c_Hdr(void);
  337. extern void GenParser_h_Hdr(void);
  338. extern void GenRuleMemberDeclarationsForCC(FILE *, Junction *);
  339. extern int addForcedTname( char *, int );
  340. extern char *OutMetaName(char *);
  341. extern void warnNoFL(char *err);
  342. extern void warnFL(char *err,char *f,int l);
  343. extern void warn(char *err);
  344. extern void warnNoCR( char *err );
  345. extern void errNoFL(char *err);
  346. extern void errFL(char *err,char *f,int l);
  347. extern void err(char *err);
  348. extern void errNoCR( char *err );
  349. extern Tree *tmake(Tree *root, ...);
  350. extern void genPredTree( Predicate *p, Junction *j );
  351. extern UserAction *newUserAction(char *);
  352. extern char *gate_symbol(char *name);
  353. extern char *makeAltID(int blockid, int altnum);
  354. extern void DumpRemainingTokSets();
  355. extern void DumpANSIFunctionArgDef(FILE *f, Junction *q);
  356. #else
  357. extern void istackreset();
  358. extern int istacksize();
  359. extern void pushint();
  360. extern int popint();
  361. extern int istackempty();
  362. extern int topint();
  363. extern void NewSetWd();
  364. extern void DumpSetWd();
  365. extern void DumpSetWdForC();
  366. extern void DumpSetWdForCC();
  367. extern void NewSet();
  368. extern void FillSet();
  369. extern void ComputeErrorSets();
  370. extern void ComputeTokSets();
  371. extern void SubstErrorClass();
  372. extern int DefErrSet();
  373. extern int DefErrSetForC();
  374. extern int DefErrSetForCC();
  375. extern void GenErrHdr();
  376. extern void dumpExpr();
  377. extern void addParm();
  378. extern Graph buildAction();
  379. extern Graph buildToken();
  380. extern Graph buildWildCard();
  381. extern Graph buildRuleRef();
  382. extern Graph Or();
  383. extern Graph Cat();
  384. extern Graph makeOpt();
  385. extern Graph makeBlk();
  386. extern Graph makeLoop();
  387. extern Graph makePlus();
  388. extern Graph emptyAlt();
  389. extern TokNode * newTokNode();
  390. extern RuleRefNode * newRNode();
  391. extern Junction * newJunction();
  392. extern ActionNode * newActionNode();
  393. extern char * makelocks();
  394. extern void preorder();
  395. extern Tree * tnode();
  396. extern void _Tfree();
  397. extern Tree * tdup();
  398. extern Tree * tappend();
  399. extern void Tfree();
  400. extern Tree * tlink();
  401. extern Tree * tshrink();
  402. extern Tree * tflatten();
  403. extern Tree * tJunc();
  404. extern Tree * tRuleRef();
  405. extern Tree * tToken();
  406. extern Tree * tAction();
  407. extern int tmember();
  408. extern Tree * tleft_factor();
  409. extern Tree * trm_perm();
  410. extern void tcvt();
  411. extern Tree * permute();
  412. extern Tree * VerifyAmbig();
  413. extern set rJunc();
  414. extern set rRuleRef();
  415. extern set rToken();
  416. extern set rAction();
  417. extern void HandleAmbiguity();
  418. extern set First();
  419. extern void freeBlkFsets();
  420. extern void genAction();
  421. extern void genRuleRef();
  422. extern void genToken();
  423. extern void genOptBlk();
  424. extern void genLoopBlk();
  425. extern void genLoopBegin();
  426. extern void genPlusBlk();
  427. extern void genSubBlk();
  428. extern void genRule();
  429. extern void genJunction();
  430. extern void genEndBlk();
  431. extern void genEndRule();
  432. extern void genHdr();
  433. extern void genHdr1();
  434. extern void dumpAction();
  435. extern Entry ** newHashTable();
  436. extern Entry * hash_add();
  437. extern Entry * hash_get();
  438. extern void hashStat();
  439. extern char * mystrdup();
  440. extern void genLexDescr();
  441. extern void dumpLexClasses();
  442. extern void genDefFile();
  443. extern void DumpListOfParmNames();
  444. extern int DumpNextNameInDef();
  445. extern void DumpOldStyleParms();
  446. extern void DumpType();
  447. extern int strmember();
  448. extern int HasComma();
  449. extern void DumpRetValStruct();
  450. extern char * StripQuotes();
  451. extern int main();
  452. extern void readDescr();
  453. extern FILE * NextFile();
  454. extern char * outname();
  455. extern void fatalFL();
  456. extern void fatal_intern();
  457. extern void cleanUp();
  458. extern char * eMsg3();
  459. extern char * eMsgd();
  460. extern void s_fprT();
  461. extern char * TerminalString();
  462. extern void lexclass();
  463. extern void lexmode();
  464. extern int LexClassIndex();
  465. extern int hasAction();
  466. extern void setHasAction();
  467. extern int addTname();
  468. extern int addTexpr();
  469. extern int Tnum();
  470. extern void Tklink();
  471. extern Entry * newEntry();
  472. extern void list_add();
  473. extern void list_apply();
  474. extern char * Fkey();
  475. extern void FoPush();
  476. extern void FoPop();
  477. extern void RegisterCycle();
  478. extern void ResolveFoCycles();
  479. extern void pJunc();
  480. extern void pRuleRef();
  481. extern void pToken();
  482. extern void pAction();
  483. extern void FoLink();
  484. extern void addFoLink();
  485. extern void GenCrossRef();
  486. extern void defErr();
  487. extern void genStdPCCTSIncludeFile();
  488. extern Predicate *find_predicates();
  489. extern void GenRulePrototypes();
  490. extern Junction *first_item_is_guess_block();
  491. extern Junction *analysis_point();
  492. extern Tree *make_tree_from_sets();
  493. extern Tree *tdup_chain();
  494. extern Tree *tdif();
  495. extern set covered_set();
  496. extern void AmbiguityDialog();
  497. extern void dumpAmbigMsg();
  498. extern void GenRuleFuncRedefs();
  499. extern void GenPredefinedSymbolRedefs();
  500. extern void GenASTSymbolRedefs();
  501. extern void GenRemapFile();
  502. extern void GenSetRedefs();
  503. extern ForcedToken *newForcedToken();
  504. extern void RemapForcedTokens();
  505. extern char *TokenOrExpr();
  506. extern void setUpperRange();
  507. extern void GenParser_c_Hdr();
  508. extern void GenParser_h_Hdr();
  509. extern void GenRuleMemberDeclarationsForCC();
  510. extern int addForcedTname();
  511. extern char *OutMetaName();
  512. extern void warnNoFL();
  513. extern void warnFL();
  514. extern void warn();
  515. extern void warnNoCR();
  516. extern void errNoFL();
  517. extern void errFL();
  518. extern void err();
  519. extern void errNoCR();
  520. extern Tree *tmake();
  521. extern void genPredTree();
  522. extern UserAction *newUserAction();
  523. extern char *gate_symbol();
  524. extern char *makeAltID();
  525. extern void DumpRemainingTokSets();
  526. extern void DumpANSIFunctionArgDef();
  527. #endif
  528.  
  529. #ifdef __USE_PROTOS
  530. #include <stdlib.h>
  531. #endif
  532.